#pragma once

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

typedef int SLDT;

typedef struct SLNode
{
    SLDT val;
    struct SLNode* next;
}SLN;

void SLPrint(SLN* psl);

SLN* BuyNewNode(SLDT val);

void SLPushFront(SLN** pphead, SLDT val);

void SLPushBack(SLN** pphead, SLDT val);

void SLPopFront(SLN** pphead);

void SLPopBack(SLN** pphead);

SLN* SLFind(SLN* phead, SLDT val);

void SLInsert(SLN** pphead, SLN* pos, SLDT val);

void SLErase(SLN** pphead, SLN* pos);

void SLDestroy(SLN** pphead);